package com.hsnn.medstgmini.trading.pur.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.transaction.Transactional;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.hsnn.medstgmini.sys.model.SysUser;
import com.hsnn.medstgmini.trading.pur.dao.RuturnConfirmDao;
import com.hsnn.medstgmini.trading.pur.model.ReturnOrder;
import com.hsnn.medstgmini.trading.pur.model.ReturnStatus;
import com.hsnn.medstgmini.trading.pur.service.RuturnConfirmManager;
import com.hsnn.medstgmini.util.Pagination;

/**
 * @category 退化确认
 * @author 蔡春龙
 * @date 2015年7月16日
 */
@Service
public class RuturnConfirmManagerImpl implements RuturnConfirmManager {

	@Autowired
	private RuturnConfirmDao ruturnConfirmDao;
	
	@Resource(name = "sessionFactory")
	private SessionFactory factory;

	/**
	 * @category 查询退货单确认列表
	 * @date 2015年7月16日
	 * @param returnOrder
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public Pagination getReturnConfirm(ReturnOrder returnOrder, Pagination page) {
		page = ruturnConfirmDao.getReturnConfirm(returnOrder, page);
		List<Map<String,Object>> list = (List<Map<String, Object>>) page.getRows();
		Map<String,Object> map = new HashMap<String, Object>();
		if(list.size()>0){
			for(int i = 0;i<list.size();i++){
				map = list.get(i);
				map.put("returnStatus", map.get("returnStatus")==null?"":ReturnStatus.getName(Integer.valueOf(map.get("returnStatus").toString())));
			}
		}
		
		return page;
	}
	
	/**
	 * @category 查询退货单明细列表
	 * @date 2015年7月16日
	 * @param returnOrder
	 * @return
	 */
	public Pagination getReturnDetail(ReturnOrder returnOrder, Pagination page) {
		return ruturnConfirmDao.getReturnDetail(returnOrder, page);
	}

	/**
	 * @category 同意或拒绝退货
	 * @date 2015年7月16日
	 * @param returnOrder
	 * @param user
	 * @param list
	 */
	@Transactional
	public void returnConfirm(ReturnOrder returnOrder, SysUser user,
			List<ReturnOrder> list) {
		Session session = factory.getCurrentSession();
		try {
			session.getTransaction().begin();
			ruturnConfirmDao.returnConfirm(returnOrder, user, list);
			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}
	}

	/**
	 * @category 查询历史退货单列表
	 * @date 2015年7月16日
	 * @param returnOrder
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public Pagination getReturnOrderHis(ReturnOrder returnOrder, Pagination page) {
		page = ruturnConfirmDao.getReturnOrderHis(returnOrder, page);
		List<Map<String,Object>> list = (List<Map<String, Object>>) page.getRows();
		Map<String,Object> map = new HashMap<String, Object>();
		if(list.size()>0){
			for(int i = 0;i<list.size();i++){
				map = list.get(i);
				map.put("returnStatus", map.get("returnStatus")==null?"":ReturnStatus.getName(Integer.valueOf(map.get("returnStatus").toString())));
			}
		}
		return page;
	}

	/**
	 * @category 查询历史退货单明细列表
	 * @date 2015年7月16日
	 * @param returnOrder
	 * @return
	 */
	public Pagination getReturnOrderHisDetail(ReturnOrder returnOrder,
			Pagination page) {
		return ruturnConfirmDao.getReturnOrderHisDetail(returnOrder, page);
	}
	/**
	 * 
	 *@category 退货记录查看（配送企业按药品查看）
	 *@author 邱磊
	 *@date 2015年7月31日 下午4:19:24
	 *@param page
	 *@return
	 */
	public Pagination getReturnDrugHis(Pagination page){
		return ruturnConfirmDao.getReturnDrugHis(page);
	}
}
